<?php 
// $Id: main.php,v 1.23.20.1 2004/07/29 18:22:38 mithyt2 Exp $
//  ------------------------------------------------------------------------ //
//                XOOPS - PHP Content Management System                      //
//                    Copyright (c) 2000 XOOPS.org                           //
//                       <http://www.xoops.org/>                             //
//  ------------------------------------------------------------------------ //
//  This program is free software; you can redistribute it and/or modify     //
//  it under the terms of the GNU General Public License as published by     //
//  the Free Software Foundation; either version 2 of the License, or        //
//  (at your option) any later version.                                      //
//                                                                           //
//  You may not change or alter any portion of this comment or credits       //
//  of supporting developers from this source code or any supporting         //
//  source code which is considered copyrighted (c) material of the          //
//  original comment or credit authors.                                      //
//                                                                           //
//  This program is distributed in the hope that it will be useful,          //
//  but WITHOUT ANY WARRANTY; without even the implied warranty of           //
//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the            //
//  GNU General Public License for more details.                             //
//                                                                           //
//  You should have received a copy of the GNU General Public License        //
//  along with this program; if not, write to the Free Software              //
//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA //
//  ------------------------------------------------------------------------ //
// Author: Kazumi Ono (AKA onokazu)                                          //
// URL: http://www.myweb.ne.jp/, http://www.xoops.org/, http://jp.xoops.org/ //
// Project: The XOOPS Project                                                //
// ------------------------------------------------------------------------- //
if (!is_object($xoopsUser) || !is_object($xoopsModule) || !$xoopsUser->isAdmin($xoopsModule->mid())) {
    exit("Access Denied");
} else {
    $op = 'list';
    if (!empty($_POST['op'])) {
        $op = $_POST['op'];
    } 
    if (isset($_GET['op'])) {
        $op = trim($_GET['op']);
    } 
    if (isset($_GET['confcat_id'])) {
        $confcat_id = intval($_GET['confcat_id']);
    } 
    /*  if ($op == 'list') {
    $confcat_handler =& xoops_gethandler('configcategory');
    $confcats =& $confcat_handler->getObjects();
    $catcount = count($confcats);
    xoops_cp_header();
    echo '<h4 style="text-align:left">'._MD_AM_SITEPREF.'</h4><ul>';
    for ($i = 0; $i < $catcount; $i++) {
      echo '<li>'.constant($confcats[$i]->getVar('confcat_name')).' [<a href="admin.php?fct=preferences&amp;op=show&amp;confcat_id='.$confcats[$i]->getVar('confcat_id').'">'._EDIT.'</a>]</li>';
    }
    echo '</ul>';
    xoops_cp_footer();
    exit();
  } */

    /*   if ($op == 'show') {
    if (empty($confcat_id)) {
      $confcat_id = 1;
    }
    $confcat_handler =& xoops_gethandler('configcategory');
    $confcat =& $confcat_handler->get($confcat_id);
    if (!is_object($confcat)) {
      redirect_header('admin.php?fct=preferences', 1);
    }
    include_once XOOPS_ROOT_PATH.'/class/xoopsformloader.php';
    include_once XOOPS_ROOT_PATH.'/class/xoopslists.php';
    $form = new XoopsThemeForm(constant($confcat->getVar('confcat_name')), 'pref_form', 'admin.php?fct=preferences');
    $config_handler =& xoops_gethandler('config');
    $criteria = new CriteriaCompo();
    $criteria->add(new Criteria('conf_modid', 0));
    $criteria->add(new Criteria('conf_catid', $confcat_id));
    $config =& $config_handler->getConfigs($criteria);
    $confcount = count($config);
    for ($i = 0; $i < $confcount; $i++) {
      $title = (!defined($config[$i]->getVar('conf_desc')) || constant($config[$i]->getVar('conf_desc')) == '') ? constant($config[$i]->getVar('conf_title')) : constant($config[$i]->getVar('conf_title')).'<br /><br /><span style="font-weight:normal;">'.constant($config[$i]->getVar('conf_desc')).'</span>';
      switch ($config[$i]->getVar('conf_formtype')) {
      case 'textarea':
        $myts =& MyTextSanitizer::getInstance();
        if ($config[$i]->getVar('conf_valuetype') == 'array') {
          // this is exceptional.. only when value type is arrayneed a smarter way for this
          $ele = ($config[$i]->getVar('conf_value') != '') ? new XoopsFormTextArea($title, $config[$i]->getVar('conf_name'), $myts->htmlspecialchars(implode('|', $config[$i]->getConfValueForOutput())), 5, 50) : new XoopsFormTextArea($title, $config[$i]->getVar('conf_name'), '', 5, 50);
        } else {
          $ele = new XoopsFormTextArea($title, $config[$i]->getVar('conf_name'), $myts->htmlspecialchars($config[$i]->getConfValueForOutput()), 5, 50);
        }
        break;
      case 'select':
        $ele = new XoopsFormSelect($title, $config[$i]->getVar('conf_name'), $config[$i]->getConfValueForOutput());
        $options =& $config_handler->getConfigOptions(new Criteria('conf_id', $config[$i]->getVar('conf_id')));
        $opcount = count($options);
        for ($j = 0; $j < $opcount; $j++) {
          $optval = defined($options[$j]->getVar('confop_value')) ? constant($options[$j]->getVar('confop_value')) : $options[$j]->getVar('confop_value');
          $optkey = defined($options[$j]->getVar('confop_name')) ? constant($options[$j]->getVar('confop_name')) : $options[$j]->getVar('confop_name');
          $ele->addOption($optval, $optkey);
        }
        break;
      case 'select_multi':
        $ele = new XoopsFormSelect($title, $config[$i]->getVar('conf_name'), $config[$i]->getConfValueForOutput(), 5, true);
        $options =& $config_handler->getConfigOptions(new Criteria('conf_id', $config[$i]->getVar('conf_id')));
        $opcount = count($options);
        for ($j = 0; $j < $opcount; $j++) {
          $optval = defined($options[$j]->getVar('confop_value')) ? constant($options[$j]->getVar('confop_value')) : $options[$j]->getVar('confop_value');
          $optkey = defined($options[$j]->getVar('confop_name')) ? constant($options[$j]->getVar('confop_name')) : $options[$j]->getVar('confop_name');
          $ele->addOption($optval, $optkey);
        }
        break;
      case 'yesno':
        $ele = new XoopsFormRadioYN($title, $config[$i]->getVar('conf_name'), $config[$i]->getConfValueForOutput(), _YES, _NO);
        break;
      case 'theme':
      case 'theme_multi':
        $ele = ($config[$i]->getVar('conf_formtype') != 'theme_multi') ? new XoopsFormSelect($title, $config[$i]->getVar('conf_name'), $config[$i]->getConfValueForOutput()) : new XoopsFormSelect($title, $config[$i]->getVar('conf_name'), $config[$i]->getConfValueForOutput(), 5, true);
        $handle = opendir(XOOPS_THEME_PATH.'/');
        $dirlist = array();
        while (false !== ($file = readdir($handle))) {
          if (is_dir(XOOPS_THEME_PATH.'/'.$file) && !preg_match("/^[.]{1,2}$/",$file) && strtolower($file) != 'cvs') {
            $dirlist[$file]=$file;
          }
        }
        closedir($handle);
        if (!empty($dirlist)) {
          asort($dirlist);
          $ele->addOptionArray($dirlist);
        }
        //$themeset_handler =& xoops_gethandler('themeset');
        //$themesetlist =& $themeset_handler->getList();
        //asort($themesetlist);
        //foreach ($themesetlist as $key => $name) {
        //  $ele->addOption($key, $name.' ('._MD_AM_THEMESET.')');
        //}
        // old theme value is used to determine whether to update cache or not. kind of dirty way
        $form->addElement(new XoopsFormHidden('_old_theme', $config[$i]->getConfValueForOutput()));
        break;
      case 'tplset':
        $ele = new XoopsFormSelect($title, $config[$i]->getVar('conf_name'), $config[$i]->getConfValueForOutput());
        $tplset_handler =& xoops_gethandler('tplset');
        $tplsetlist =& $tplset_handler->getList();
        asort($tplsetlist);
        foreach ($tplsetlist as $key => $name) {
          $ele->addOption($key, $name);
        }
        // old theme value is used to determine whether to update cache or not. kind of dirty way
        $form->addElement(new XoopsFormHidden('_old_theme', $config[$i]->getConfValueForOutput()));
        break;
      case 'timezone':
        $ele = new XoopsFormSelectTimezone($title, $config[$i]->getVar('conf_name'), $config[$i]->getConfValueForOutput());
        break;
      case 'language':
        $ele = new XoopsFormSelectLang($title, $config[$i]->getVar('conf_name'), $config[$i]->getConfValueForOutput());
        break;
      case 'startpage':
        $ele = new XoopsFormSelect($title, $config[$i]->getVar('conf_name'), $config[$i]->getConfValueForOutput());
        $module_handler =& xoops_gethandler('module');
        $criteria = new CriteriaCompo(new Criteria('hasmain', 1));
        $criteria->add(new Criteria('isactive', 1));
        $moduleslist =& $module_handler->getList($criteria, true);
        $moduleslist['--'] = _MD_AM_NONE;
        $ele->addOptionArray($moduleslist);
        break;
      case 'group':
        $ele = new XoopsFormSelectGroup($title, $config[$i]->getVar('conf_name'), false, $config[$i]->getConfValueForOutput(), 1, false);
        break;
      case 'group_multi':
        $ele = new XoopsFormSelectGroup($title, $config[$i]->getVar('conf_name'), false, $config[$i]->getConfValueForOutput(), 5, true);
        break;
      // RMV-NOTIFY - added 'user' and 'user_multi'
      case 'user':
        $ele = new XoopsFormSelectUser($title, $config[$i]->getVar('conf_name'), false, $config[$i]->getConfValueForOutput(), 1, false);
        break;
      case 'user_multi':
        $ele = new XoopsFormSelectUser($title, $config[$i]->getVar('conf_name'), false, $config[$i]->getConfValueForOutput(), 5, true);
        break;
      case 'module_cache':
        $module_handler =& xoops_gethandler('module');
        $modules =& $module_handler->getObjects(new Criteria('hasmain', 1), true);
        $currrent_val = $config[$i]->getConfValueForOutput();
        $cache_options = array('0' => _NOCACHE, '30' => sprintf(_SECONDS, 30), '60' => _MINUTE, '300' => sprintf(_MINUTES, 5), '1800' => sprintf(_MINUTES, 30), '3600' => _HOUR, '18000' => sprintf(_HOURS, 5), '86400' => _DAY, '259200' => sprintf(_DAYS, 3), '604800' => _WEEK);
        if (count($modules) > 0) {
          $ele = new XoopsFormElementTray($title, '<br />');
          foreach (array_keys($modules) as $mid) {
            $c_val = isset($currrent_val[$mid]) ? intval($currrent_val[$mid]) : null;
            $selform = new XoopsFormSelect($modules[$mid]->getVar('name'), $config[$i]->getVar('conf_name')."[$mid]", $c_val);
            $selform->addOptionArray($cache_options);
            $ele->addElement($selform);
            unset($selform);
          }
        } else {
          $ele = new XoopsFormLabel($title, _MD_AM_NOMODULE);
        }
        break;
      case 'site_cache':
        $ele = new XoopsFormSelect($title, $config[$i]->getVar('conf_name'), $config[$i]->getConfValueForOutput());
        $ele->addOptionArray(array('0' => _NOCACHE, '30' => sprintf(_SECONDS, 30), '60' => _MINUTE, '300' => sprintf(_MINUTES, 5), '1800' => sprintf(_MINUTES, 30), '3600' => _HOUR, '18000' => sprintf(_HOURS, 5), '86400' => _DAY, '259200' => sprintf(_DAYS, 3), '604800' => _WEEK));
        break;
      case 'password':
        $myts =& MyTextSanitizer::getInstance();
        $ele = new XoopsFormPassword($title, $config[$i]->getVar('conf_name'), 50, 255, $myts->htmlspecialchars($config[$i]->getConfValueForOutput()));
        break;
      case 'textbox':
      default:
        $myts =& MyTextSanitizer::getInstance();
        $ele = new XoopsFormText($title, $config[$i]->getVar('conf_name'), 50, 255, $myts->htmlspecialchars($config[$i]->getConfValueForOutput()));
        break;
      }
      $hidden = new XoopsFormHidden('conf_ids[]', $config[$i]->getVar('conf_id'));
      $form->addElement($ele);
      $form->addElement($hidden);
      unset($ele);
      unset($hidden);
    }
    $form->addElement(new XoopsFormHidden('op', 'save'));
    $form->addElement( $xoopsGTicket->getTicketXoopsForm( __LINE__ ) );
    $form->addElement(new XoopsFormButton('', 'button', _GO, 'submit'));
    xoops_cp_header();
    echo '<a href="admin.php?fct=preferences">'. _MD_AM_PREFMAIN .'</a>&nbsp;<span style="font-weight:bold;">&raquo;&raquo;</span>&nbsp;'.constant($confcat->getVar('confcat_name')).'<br /><br />';
    $form->display();
    xoops_cp_footer();
    exit();
  } */

    if ($op == 'showmod') {
        $config_handler = &xoops_gethandler('config');
        $mod = isset($_GET['mod']) ? intval($_GET['mod']) : 0;
        if (empty($mod)) {
            header('Location: admin.php?fct=preferences');
            exit();
        } 
        $config = &$config_handler->getConfigs(new Criteria('conf_modid', $mod));
        $count = count($config);
        if ($count < 1) {
            redirect_header('admin.php?fct=preferences', 1);
        } 
        include_once XOOPS_ROOT_PATH . '/class/xoopsformloader.php';
        $form = new XoopsThemeForm(_MD_AM_MODCONFIG, 'pref_form', 'admin.php?fct=preferences');
        $module_handler = &xoops_gethandler('module');
        $module = &$module_handler->get($mod);
        if (file_exists(XOOPS_ROOT_PATH . '/modules/' . $module->getVar('dirname') . '/language/' . $xoopsConfig['language'] . '/modinfo.php')) {
            include_once XOOPS_ROOT_PATH . '/modules/' . $module->getVar('dirname') . '/language/' . $xoopsConfig['language'] . '/modinfo.php';
        } 
        // if has comments feature, need comment lang file
        if ($module->getVar('hascomments') == 1) {
            include_once XOOPS_ROOT_PATH . '/language/' . $xoopsConfig['language'] . '/comment.php';
        } 
        // RMV-NOTIFY
        // if has notification feature, need notification lang file
        if ($module->getVar('hasnotification') == 1) {
            include_once XOOPS_ROOT_PATH . '/language/' . $xoopsConfig['language'] . '/notification.php';
        } 

        $modname = $module->getVar('name');
        $button_tray = new XoopsFormElementTray("");
        if ($module->getInfo('adminindex')) {
            // $form->addElement(new XoopsFormHidden('redirect', XOOPS_URL.'/modules/'.$module->getVar('dirname').'/'.$module->getInfo('adminindex')));
            $button_tray->addElement(new XoopsFormHidden('redirect', XOOPS_URL . '/modules/' . $module->getVar('dirname') . '/admin/admin.php?fct=preferences&op=showmod&mod=' . $module->getVar('mid'))); // GIJ Patch
        } 
        for ($i = 0; $i < $count; $i++) {
            $title4tray = (!defined($config[$i]->getVar('conf_desc')) || constant($config[$i]->getVar('conf_desc')) == '') ? constant($config[$i]->getVar('conf_title')) : constant($config[$i]->getVar('conf_title')) . '<br /><br /><span style="font-weight:normal;">' . constant($config[$i]->getVar('conf_desc')) . '</span>'; // GIJ
            $title = '' ; // GIJ
            switch ($config[$i]->getVar('conf_formtype')) {
                case 'textarea':
                    $myts = &MyTextSanitizer::getInstance();
                    if ($config[$i]->getVar('conf_valuetype') == 'array') {
                        // this is exceptional.. only when value type is arrayneed a smarter way for this
                        $ele = ($config[$i]->getVar('conf_value') != '') ? new XoopsFormTextArea($title, $config[$i]->getVar('conf_name'), $myts->htmlspecialchars(implode('|', $config[$i]->getConfValueForOutput())), 5, 50) : new XoopsFormTextArea($title, $config[$i]->getVar('conf_name'), '', 5, 50);
                    } else {
                        $ele = new XoopsFormTextArea($title, $config[$i]->getVar('conf_name'), $myts->htmlspecialchars($config[$i]->getConfValueForOutput()), 5, 50);
                    } 
                    break;
                case 'select':
                    $ele = new XoopsFormSelect($title, $config[$i]->getVar('conf_name'), $config[$i]->getConfValueForOutput());
                    $options = &$config_handler->getConfigOptions(new Criteria('conf_id', $config[$i]->getVar('conf_id')));
                    $opcount = count($options);
                    for ($j = 0; $j < $opcount; $j++) {
                        $optval = defined($options[$j]->getVar('confop_value')) ? constant($options[$j]->getVar('confop_value')) : $options[$j]->getVar('confop_value');
                        $optkey = defined($options[$j]->getVar('confop_name')) ? constant($options[$j]->getVar('confop_name')) : $options[$j]->getVar('confop_name');
                        $ele->addOption($optval, $optkey);
                    } 
                    break;
                case 'select_multi':
                    $ele = new XoopsFormSelect($title, $config[$i]->getVar('conf_name'), $config[$i]->getConfValueForOutput(), 5, true);
                    $options = &$config_handler->getConfigOptions(new Criteria('conf_id', $config[$i]->getVar('conf_id')));
                    $opcount = count($options);
                    for ($j = 0; $j < $opcount; $j++) {
                        $optval = defined($options[$j]->getVar('confop_value')) ? constant($options[$j]->getVar('confop_value')) : $options[$j]->getVar('confop_value');
                        $optkey = defined($options[$j]->getVar('confop_name')) ? constant($options[$j]->getVar('confop_name')) : $options[$j]->getVar('confop_name');
                        $ele->addOption($optval, $optkey);
                    } 
                    break;
                case 'yesno':
                    $ele = new XoopsFormRadioYN($title, $config[$i]->getVar('conf_name'), $config[$i]->getConfValueForOutput(), _YES, _NO);
                    break;
                case 'group':
                    include_once XOOPS_ROOT_PATH . '/class/xoopslists.php';
                    $ele = new XoopsFormSelectGroup($title, $config[$i]->getVar('conf_name'), false, $config[$i]->getConfValueForOutput(), 1, false);
                    break;
                case 'group_multi':
                    include_once XOOPS_ROOT_PATH . '/class/xoopslists.php';
                    $ele = new XoopsFormSelectGroup($title, $config[$i]->getVar('conf_name'), false, $config[$i]->getConfValueForOutput(), 5, true);
                    break; 
                // RMV-NOTIFY: added 'user' and 'user_multi'
                case 'user':
                    include_once XOOPS_ROOT_PATH . '/class/xoopslists.php';
                    $ele = new XoopsFormSelectUser($title, $config[$i]->getVar('conf_name'), false, $config[$i]->getConfValueForOutput(), 1, false);
                    break;
                case 'user_multi':
                    include_once XOOPS_ROOT_PATH . '/class/xoopslists.php';
                    $ele = new XoopsFormSelectUser($title, $config[$i]->getVar('conf_name'), false, $config[$i]->getConfValueForOutput(), 5, true);
                    break;
                case 'password':
                    $myts = &MyTextSanitizer::getInstance();
                    $ele = new XoopsFormPassword($title, $config[$i]->getVar('conf_name'), 50, 255, $myts->htmlspecialchars($config[$i]->getConfValueForOutput()));
                    break;
                case 'textbox':
                default:
                    $myts = &MyTextSanitizer::getInstance();
                    $ele = new XoopsFormText($title, $config[$i]->getVar('conf_name'), 50, 255, $myts->htmlspecialchars($config[$i]->getConfValueForOutput()));
                    break;
            } 
            $hidden = new XoopsFormHidden('conf_ids[]', $config[$i]->getVar('conf_id'));
            $ele_tray = new XoopsFormElementTray($title4tray , '') ;
            $ele_tray->addElement($ele);
            $ele_tray->addElement($hidden);
            $form->addElement($ele_tray) ;
            unset($ele_tray);
            unset($ele);
            unset($hidden);
        } 
        $button_tray->addElement(new XoopsFormHidden('op', 'save'));
        $button_tray->addElement($xoopsGTicket->getTicketXoopsForm(__LINE__ , 1800 , 'mymenu'));
        $button_tray->addElement(new XoopsFormButton('', 'button', _GO, 'submit'));
        $form->addElement($button_tray) ;
        xoops_cp_header(); 
        // GIJ patch start
        include('./mymenu.php') ;
        echo "<h3 style='text-align:left;'>" . $module->getvar('name') . ' &nbsp; ' . _PREFERENCES . "</h3>\n" ; 
        // GIJ patch end
        $form->display();
        xoops_cp_footer();
        exit();
    } 

    if ($op == 'save') {
        // if ( !admin_refcheck("/modules/$admin_mydirname/admin/") ) {
        // exit('Invalid referer');
        // }
        if (! $xoopsGTicket->check(true , 'mymenu')) {
            redirect_header(XOOPS_URL . '/', 3, $xoopsGTicket->getErrors());
        } 
        require_once(XOOPS_ROOT_PATH . '/class/template.php');
        $xoopsTpl = new XoopsTpl();
        $xoopsTpl->clear_all_cache(); 
        // regenerate admin menu file
        xoops_module_write_admin_menu(xoops_module_get_admin_menu());
        if (!empty($_POST['conf_ids'])) {
            $conf_ids = $_POST['conf_ids'];
        } 
        $count = count($conf_ids);
        $tpl_updated = false;
        $theme_updated = false;
        $startmod_updated = false;
        $lang_updated = false;
        if ($count > 0) {
            for ($i = 0; $i < $count; $i++) {
                $config = &$config_handler->getConfig($conf_ids[$i]);
                $new_value = &$_POST[$config->getVar('conf_name')];
                if (is_array($new_value) || $new_value != $config->getVar('conf_value')) {
                    // if language has been changed
                    if (!$lang_updated && $config->getVar('conf_catid') == XOOPS_CONF && $config->getVar('conf_name') == 'language') {
                        // regenerate admin menu file
                        $xoopsConfig['language'] = $_POST[$config->getVar('conf_name')];
                        xoops_module_write_admin_menu(xoops_module_get_admin_menu());
                        $lang_updated = true;
                    } 
                    // if default theme has been changed
                    if (!$theme_updated && $config->getVar('conf_catid') == XOOPS_CONF && $config->getVar('conf_name') == 'theme_set') {
                        $member_handler = &xoops_gethandler('member');
                        $member_handler->updateUsersByField('theme', $_POST[$config->getVar('conf_name')]);
                        $theme_updated = true;
                    } 
                    // if default template set has been changed
                    if (!$tpl_updated && $config->getVar('conf_catid') == XOOPS_CONF && $config->getVar('conf_name') == 'template_set') {
                        // clear cached/compiled files and regenerate them if default theme has been changed
                        if ($xoopsConfig['template_set'] != $_POST[$config->getVar('conf_name')]) {
                            $newtplset = $_POST[$config->getVar('conf_name')]; 
                            // clear all compiled and cachedfiles
                            $xoopsTpl->clear_compiled_tpl(); 
                            // generate compiled files for the new theme
                            // block files only for now..
                            $tplfile_handler = &xoops_gethandler('tplfile');
                            $dtemplates = &$tplfile_handler->find('default', 'block');
                            $dcount = count($dtemplates); 
                            // need to do this to pass to xoops_template_touch function
                            $GLOBALS['xoopsConfig']['template_set'] = $newtplset;

                            for ($i = 0; $i < $dcount; $i++) {
                                $found = &$tplfile_handler->find($newtplset, 'block', $dtemplates[$i]->getVar('tpl_refid'), null);
                                if (count($found) > 0) {
                                    // template for the new theme found, compile it
                                    xoops_template_touch($found[0]->getVar('tpl_id'));
                                } else {
                                    // not found, so compile 'default' template file
                                    xoops_template_touch($dtemplates[$i]->getVar('tpl_id'));
                                } 
                            } 
                            // generate image cache files from image binary data, save them under cache/
                            $image_handler = &xoops_gethandler('imagesetimg');
                            $imagefiles = &$image_handler->getObjects(new Criteria('tplset_name', $newtplset), true);
                            foreach (array_keys($imagefiles) as $i) {
                                if (!$fp = fopen(XOOPS_CACHE_PATH . '/' . $newtplset . '_' . $imagefiles[$i]->getVar('imgsetimg_file'), 'wb')) {
                                } else {
                                    fwrite($fp, $imagefiles[$i]->getVar('imgsetimg_body'));
                                    fclose($fp);
                                } 
                            } 
                        } 
                        $tpl_updated = true;
                    } 
                    // add read permission for the start module to all groups
                    if (!$startmod_updated && $new_value != '--' && $config->getVar('conf_catid') == XOOPS_CONF && $config->getVar('conf_name') == 'startpage') {
                        $member_handler = &xoops_gethandler('member');
                        $groups = &$member_handler->getGroupList();
                        $moduleperm_handler = &xoops_gethandler('groupperm');
                        $module_handler = &xoops_gethandler('module');
                        $module = &$module_handler->getByDirname($new_value);
                        foreach ($groups as $groupid => $groupname) {
                            if (!$moduleperm_handler->checkRight('module_read', $module->getVar('mid'), $groupid)) {
                                $moduleperm_handler->addRight('module_read', $module->getVar('mid'), $groupid);
                            } 
                        } 
                        $startmod_updated = true;
                    } 

                    $config->setConfValueForInput($new_value);
                    $config_handler->insertConfig($config);
                } 
                unset($new_value);
            } 
        } 
        if (!empty($use_mysession) && $xoopsConfig['use_mysession'] == 0 && $session_name != '') {
            setcookie($session_name, session_id(), time() + (60 * intval($session_expire)), '/', '', 0);
        } 
        if (! empty($_POST['redirect'])) {
            redirect_header($_POST['redirect'], 2, _MD_AM_DBUPDATED);
        } else {
            redirect_header("admin.php?fct=preferences", 2, _MD_AM_DBUPDATED);
        } 
    } 
} 

?>